import { handleActions as createReducer } from "redux-actions";
import { addProductToLocalCart, changeLocalProductNumber, deleteProductFromLocalCart, saveCarts } from "../actions/cart.action";
const initialState = []
// 2,将商品添加到本地的购物车数据中
function handelAddProductToLocalCart (state,action){
    // 看原有数据中是否有商品列表，如果有count数量就+1，如果购物车原有数据中没有直接push
 const newState = JSON.parse(JSON.stringify(state))
 const product = newState.find(item=>action.payload.id === item.id);
 if(product){
    product.count = product.count + 1
 }else{
    newState.push(action.payload)
   
 }
 return newState
}
// 4,将服务器端返回的购物车列表数据同步到本地的购物车中
const handleSaveCarts = (state,action)=>action.payload
// 6,删除本地购物车数据中的商品
function handleDeleteProductFromLocalCart(state,action){
   const newState = JSON.parse(JSON.stringify(state));
   newState.splice(action.payload,1)
   return newState
}
// 8,更新本地购物车中的商品数量
function handleChangeLocalProductNumber(state,action){
   const newState = JSON.parse(JSON.stringify(state));
   const product = newState.find(item=>action.payload.id === item.id);
   product.count = action.payload.count
   return newState
}
export default createReducer({
   // 2,将商品添加到本地的购物车数据中
    [addProductToLocalCart]: handelAddProductToLocalCart,
   // 4,将服务器端返回的购物车列表数据同步到本地的购物车中
    [saveCarts]:handleSaveCarts,
   //   6,删除本地购物车数据中的商品
   [deleteProductFromLocalCart]:handleDeleteProductFromLocalCart,
   // 8,更新本地购物车中的商品数量
   [changeLocalProductNumber]:handleChangeLocalProductNumber
}, initialState)